module define
     parameter (N_SGL_DIGITS=6)
     parameter (N_DBL_DIGITS=15)
     parameter (N_INT_ORDER=8)
     parameter (NBS=selected_real_kind(N_SGL_DIGITS))
     parameter (NBD=selected_real_kind(N_DBL_DIGITS))
     parameter (NBI=selected_int_kind(N_INT_ORDER))
!#ifdef DBL         
     parameter (NBF=NBD)
!#else         
!         parameter (NBF=NBS)
!#endif         
!
! constants
    parameter (COL_AB = 1)
    parameter (COL_SC = 2)
    integer ng2,ndecgrp
    logical TRUE, FALSE                                         
    real(NBF)  cinf,zero,one,half,big,CKELVIN,PI
    parameter (ng2=2,ndecgrp=6)
    parameter (TRUE=.true.,FALSE=.false.)

    parameter (CKELVIN=273.15_NBF,PI=3.1415927_NBF)
    parameter (cinf=1.0e30_NBF,zero=0._NBF,one=1._NBF,EPSILON=1.e-30_NBF,half=0.5_NBF,big=1.0e30_NBF)

    integer(NBI) UP,DOWN,CIRCLE
    parameter (UP=1,DOWN=2,CIRCLE=3)

    type scatmat
        sequence
        integer(NBI) ib,ie
        real(NBF),pointer :: from(:)
        real(NBF),pointer :: to(:)
    end type
    type cmtofm
        sequence
        integer(NBI) nfm
        integer(NBI),pointer :: fm(:)
    end type

    character(132) mesg
    character(20) version

!   for mc simulation
    type particle
        sequence
        real(NBF) x, mu, w, wm
        integer(NBI) l, g
    end type

end module
